﻿#!/usr/bin/perl

$BASEURL="http://www.example.com/weather.jsp";
$PARAMS="zip=20170";

# If $strategy == "prefill", to umieszczamy fałszywe parametry przed
# prawidłowymi. W przeciwnym przypadku fałszywe parametry będą umieszczone za prawidłowymi.
$strategy = "prefill";

# Ile adresów URL mamy wygenerować. Każdy adres URL jest o 16 znaków dłuższy od tego, który
# występuje przed nim. Przy zmiennej $depth ustawionej na 16, ostatni parametr ma 256 znaków
# Aby uzyskać interesujący rozmiar adresów URL (4 kB lub więcej), należy ustawić
# wartość zmiennej $depth na 256.
$depth = 256;

# Ile pozycji pominąć w każdej iteracji. Ustawienie tej zmiennej na 1 przy
# wartości zmiennej $depth równej 256 spowoduje, że uzyskamy 256 różnych adresów URL, począwszy od 16 znaków,
# aż do 4096. W przypadku ustawienia zmiennej $skip na 8 uzyskamy tylko 32 unikatowe
# adresy URL (256/8), ponieważ w każdej iteracji będzie pomijanych 8.
$skip  = 8;

for( my $i = 0; $i < $depth; $i += $skip ) {
    # Budowanie parametrów dla jednego adresu URL.
    $bogusParams = "";
    for( my $j = 1; $j <= $i; $j++ ) {
        $bogusParams .= sprintf( "a%0.7d=z%0.7d&", $j, $j );
    }
    if( $strategy eq "prefill" ) {
        $url = $BASEURL . "?" . $bogusParams . "&" . $PARAMS;
    } else {
        # Wykorzystanie funkcji substr() w celu obcięcia końcowych parametrów z adresu URL, tak by stał się prawidłowy.
        $url = $BASEURL . "?" . $PARAMS . "&" . substr ($bogusParams, 1, -1);
    }
    print "$url\n";
}
